I will switch back to English. Thank you for attending our class. Thanks for coming here
in person, but we also have of course the recordings in English this semester and of
course in German from last semester. And today we want to continue to talk about different
agile development methods. So we've seen so far, just to recap a bit, why are you in this class?
Yeah, because software engineering is something if it's not done properly, projects fail. If you
have smaller software projects, not having to rely on not being educated well in software
engineering is probably not that bad because it mainly relates to programming skills. But if you
want to develop software in a larger team, in larger projects, you have to have software engineering
skills. And we go essentially all the way from development processes, how to organize that,
then towards really looking into requirements, analyze what is really needed for a software
project and how to measure what a meaningful requirement is. And we will also look into
different architectural approaches, what a good software architecture can look like,
and we will talk a little bit about design patterns, recurring themes in software development
that appear again and again. And towards the end we will look a little bit more into the
management side, how to stay within the allocated budget, how to stay within the allocated resources
that we don't get too expensive. Sometimes you have to make some decisions to simplify goals or
to be able to implement things in a timely and accurate manner. So there's also project management,
communication is also a very, very important requirement in software engineering. Do you have a question?
Ah, okay. Exactly. So these, and I must admit that some people don't teach software engineering
that much and that sometimes it's not an important topic because people only focus on the algorithms
and only on the math. But in the end you will have to put it to use and there are also a lot
of soft factors that are very important and we will highlight them throughout this lecture. So
it's not just that you know the algorithms well, that you know the programming language as well,
it's also that you will get your communications, your team set up properly and you've already
seen that. We started talking with the software processes and started off with this waterfall
model where you have the grand idea in the beginning and then you think about a very detailed
plan and then everything according goes according to plan. If everything goes according to plan,
the waterfall model will be fine. But most of the time software projects don't go according to plan
and you have to reiterate because it's not like you're manufacturing a table or a chair or something
like that. You know for a chair you can do that, okay I want it to have four legs and then I have
to have a backrest and then you can plan it and build it piece by piece and then in the end you
put it together. But the thing with software is different because software, not just that we have
other means of manufacturing software, we can update. You can deliver the software and then
send out updates and so on which gives a huge flexibility. Imagine that you could be able to
exchange the cushions of a chair when it's already sold and you make a better cushioning or backrest
or something like that. That would be immensely expensive because you would have to send somebody
and then really change that particular chair. The software updates, they run overnight. It's very
cheap to change the software even if it's already at the site of your customer. Everybody of you
knows that your Windows PCs, every now and then they shut down overnight and come up with a new
version and then you have to, you see that some of the processes were killed because it ran an
update in the background. So it's very very cheap to do that and therefore we've seen and discussed
agile methods, methods that allow you to adopt your plan over several iterations. We started
with this rational unified process which is more focusing still on planning. Then we've looked into
Kanban which was essentially very much focused on the flow, on the process that you're and it's also
used in manufacturing and Kanban focuses a lot about seeing where the bottlenecks are and then
avoiding the bottlenecks. You know that everybody has the right piece of software and so on at the
time when they need it and they don't run out of things to do because that is also very unproductive.
If people have to remain idle, it's the same thing if you're writing software that is
multi-threaded. If you just use a single core in your PC then of course you're not using the full
efficiency. If you start using way more than you actually physically have you end up with also
Presenters
Zugänglich über
Offener Zugang
Dauer
01:29:57 Min
Aufnahmedatum
2024-05-02
Hochgeladen am
2024-05-03 17:39:03
Sprache
en-US